package ru.averta.notes.service.search;

import org.apache.lucene.index.IndexReader;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.fedor.vectorhighlight.FieldQuery;
import ru.averta.notes.domain.Site;

/**
 * <code>HighlighterService</code>
 *
 * @author fedor.belov (fedor.belov@mail.ru)
 *         Date: 22.09.11 15:31
 */
public interface HighlighterService {

    /**
     * Оборачивает запрос
     * @param query
     * @return
     */
    FieldQuery getFieldQuery(Query query);

    /**
     * Возвращает выделенный контент документа docId, удовлетворяющий запросу query
     *
     * @param query
     * @param indexReader
     * @param docId
     * @return
     */
    String getHighlightedContent(Site site, FieldQuery query, IndexReader indexReader, Integer docId);

    /**
     * Возвращает выделенный заголовок документа docId, удовлетворяющий запросу query
     *
     * @param query
     * @param indexReader
     * @param docId
     * @return
     */
    String getHighlightedTitle(Site site, FieldQuery query, IndexReader indexReader, Integer docId);
}
